package nan.List;

import java.util.ArrayList;
import java.util.Iterator;

public class Main {
    public static void main(String[] args) {
        //创建Arraylist实例
        ArrayList<String> arrayList=new ArrayList<>();//arrayList中元素类型是String
        //List<String> arrayList=new ArrayList<>();向上转型，
        // 所以下面的方法调用arrayList.add("c");都触发了动态绑定
        System.out.println(arrayList.size());//现在里面什么都没放，长度为0
        System.out.println(arrayList.isEmpty());//arrayList里面是否为空
        //2.往arrayList里面增加元素
        arrayList.add("c");
        arrayList.add("b");
        arrayList.add("k");
        arrayList.add("l");
        //add两个参数版本，是把元素添加到指定的位置上
        arrayList.add(3,"d");//中间插入
        System.out.println(arrayList.size());
        System.out.println(arrayList);
        //3.删除元素
//        arrayList.remove(2);
//        System.out.println("按位置删除："+arrayList);
        arrayList.remove("k");
        System.out.println("按值删除："+arrayList);
        //4.查找
        boolean ret=arrayList.contains("l");//通过equals的方式比较
        System.out.println("查找l的结果为："+ret);
        int index=arrayList.indexOf("l");
        System.out.println("查找l的位置为："+index);
        //5.获取元素
        String elem=arrayList.get(0);
        System.out.println(elem);
        //6.遍历操作
        //a.通过下标来遍历
        System.out.println("通过下标来遍历：");
        for(int i=0;i< arrayList.size();i++){
            System.out.println(arrayList.get(i));
        }
        //b.通过迭代器来遍历，迭代器也是一个类，用途就是帮助我们遍历集合类，
        //先通过iterator方法获取到迭代器对象，再通过while循环进行遍历
        Iterator<String> iterator=arrayList.iterator();
        while (iterator.hasNext()){//把当前的元素获取到并返回，并且让光标指向下一个
            // hasNext为末尾循环就结束
            String elem2= iterator.next();
            System.out.println(elem2);
        }
        //c.直接使用for-each来遍历（本质上是基于迭代器的方式来实现的）
        for (String elem3:arrayList){
            System.out.println(elem3);
        }
    }
}
